import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.ServerSocket;
import java.net.Socket;

public class TcpServer {
    private static final int PORT = 8888;

    public static void main(String[] args) throws IOException {
        // 1. 创建一个服务端 ServerSocket ，用于收发 TCP报文
        ServerSocket server = new ServerSocket(PORT);
        // 不同的等待客户端连接
        while(true){
            System.out.println("————————————————————————————————————————————————————————————————");
            System.out.println("等待客户端建立TCP连接...");
            // 2. 等待客户端连接， 注意该方法为阻塞方法
            Socket client = server.accept();
            System.out.printf("客户端IP：%s%n", client.getInetAddress().getHostAddress());
            System.out.printf("客户端端口号：%s%n", client.getPort());

            // 5. 接收客户端的数据， 需要从客户端Socket中的输入流读取
            System.out.println("接收到客户端请求");
            InputStream is = client.getInputStream();
            // 为了方便获取字符串内容， 可以将以上字节流包装为 字符流
            BufferedReader br = new BufferedReader(new InputStreamReader(is, "UTF-8"));
            String line ;
            while((line = br.readLine())!=null){
                System.out.println(line);
            }
            // 6. 双方关闭  连接： 服务端是关闭客户端socket 连接
            client.close();
        }
    }

}
